import { cloneDeep } from 'lodash'
import {
  getClientList,
  getDepartList,
  getWorkTypeList,
  getPostList,
  getRegionList,
  getAllMenuList,
  getOrderList,
  getCustomList,
  getStyleList,
  getColorList,
  getSizeList,
  getSectionList,
  getPartList,
  getProdTypeList,
  getMakeList,
  getAllMakeList,
  getOnlineRoadMapList,
  getRoleList,
  getUserList,
  getWaterList,
  getWaGroupList,
  getEmplGruopList,
  getSkillGradeList,
  getEmplList,
  getUntreatNoticeList,
  getMachineTypeList,
  getTrackList
} from '@/api'
const setting = {
  state: {
    clientList: [],
    departList: [],
    workTypeList: [],
    postList: [],
    regionList: [],
    allMenuList: [],
    orderList: [],
    customList: [],
    styleList: [],
    colorList: [],
    sizeList:[],
    sectionList:[], // 工段
    partList: [],
    prodTypeList: [],
    makeList: [],
    allMakeList: [],
    onlineRoadMap: [],
    roleList: [],
    userList: [],
    waterList: [], // 流水线
    waGroupList: [], // 流水线组别
    emplGruopList: [],
    employeesList: [],
    untreatNoticeList: [], // '未处理通知'
    untreatNoticeNo: 0, // '未处理通知数量
    machineTypeList: [],
    trackList: [] // 主轨列表
  },
  mutations: {
    updateNormalState(state, payload) {
      Object.keys(payload).forEach((key) => {
        state[key] = cloneDeep(payload[key])
      });
    }
  },
  actions: {
    // 获取客户机列表
    getClient ({ commit }) {
      return new Promise((reslove, reject) => {
        getClientList({ status: 0 }).then(res => {
          if (!res.success) reject('error')
          commit('updateNormalState', { clientList: res.data })
          reslove()
        }).catch(err => {
          reject(err)
        })
      })
    },
    // 部门组别
    getDepart ({ commit }) {
      return new Promise((reslove, reject) => {
        getDepartList({}).then(res => {
          if (!res.success) reject('error')
          commit('updateNormalState', { departList: res.data })
          reslove()
        }).catch(err => {
          reject(err)
        })
      })
    },
    // 工种
    getWorkType ({ commit }) {
      return new Promise((reslove, reject) => {
        getWorkTypeList({ }).then(res => {
          if (!res.success) reject('error')
          commit('updateNormalState', { workTypeList: res.data })
          reslove()
        }).catch(err => {
          reject(err)
        })
      })
    },
    // 职务
    getPost ({ commit }) {
      return new Promise((reslove, reject) => {
        getPostList({ pageSize: 100000, pageNo: 1 }).then(res => {
          if (!res.success) reject('error')
          commit('updateNormalState', { postList: res.data.list })
          reslove()
        }).catch(err => {
          reject(err)
        })
      })
    },
    // 地区
    getRegion({ commit }) {
      return new Promise((reslove, reject) => {
        getRegionList({}).then(res => {
          if (!res.success) reject('error')
          commit('updateNormalState', { regionList: res.data })
          reslove()
        }).catch(err => {
          reject(err)
        })
      })
    },
    // 菜单
    getAllMenu({ commit }) {
      return new Promise((reslove, reject) => {
        getAllMenuList().then(res => {
          if (!res.success) reject('error')
          commit('updateNormalState', { allMenuList: res.data })
          reslove()
        }).catch(err => {
          reject(err)
        })
      })
    },
    // 订单
    getOrder({ commit }) {
      return new Promise((reslove, reject) => {
        getOrderList().then(res => {
          if (!res.success) reject('error');
          (res.data || []).forEach(item=> {
            item.label = item.orderNo
            item.value = item.id
          })
          commit('updateNormalState', { orderList: res.data })
          reslove()
        }).catch(err => {
          reject(err)
        })
      })
    },
    // 客户
    getCustom({ commit }) {
      return new Promise((reslove, reject) => {
        getCustomList().then(res => {
          if (!res.success) reject('error');
          (res.data || []).forEach(item=> {
            item.label = item.name
            item.value = item.id
          })
          commit('updateNormalState', { customList: res.data })
          reslove()
        }).catch(err => {
          reject(err)
        })
      })
    },
    // 款式
    getStyle({ commit }) {
      return new Promise((reslove, reject) => {
        getStyleList().then(res => {
          if (!res.success) reject('error');
          (res.data || []).forEach(item=> {
            item.label = item.name
            item.value = item.id   
          })
          commit('updateNormalState', { styleList: res.data })
          reslove()
        }).catch(err => {
          reject(err)
        })
      })
    },
    // 颜色
    getColor({ commit }) {
      return new Promise((reslove, reject) => {
        getColorList().then(res => {
          if (!res.success) reject('error')
          commit('updateNormalState', { colorList: res.data })
          reslove()
        }).catch(err => {
          reject(err)
        })
      })
    },
    // 尺码
    getSize({ commit }) {
      return new Promise((reslove, reject) => {
        getSizeList().then(res => {
          if (!res.success) reject('error')
          commit('updateNormalState', { sizeList: res.data })
          reslove()
        }).catch(err => {
          reject(err)
        })
      })
    },
    // 工段
    getSection({ commit }) {
      return new Promise((reslove, reject) => {
        getSectionList().then(res => {
          if (!res.success) reject('error')
          commit('updateNormalState', { sectionList: res.data })
          reslove()
        }).catch(err => {
          reject(err)
        })
      })
    },
    // 产品部位
    getPart({ commit }) {
      return new Promise((reslove, reject) => {
        getPartList().then(res => {
          if (!res.success) reject('error')
          commit('updateNormalState', { partList: res.data })
          reslove()
        }).catch(err => {
          reject(err)
        })
      })
    },
    // 产品类型   getProdTypeList
    getProdType({ commit }) {
      return new Promise((reslove, reject) => {
        getProdTypeList().then(res => {
          if (!res.success) reject('error')
          commit('updateNormalState', { prodTypeList: res.data })
          reslove()
        }).catch(err => {
          reject(err)
        })
      })
    },
    // 挂片站
    getMake({ commit }) {
      return new Promise((reslove, reject) => {
        getMakeList().then(res => {
          if (!res.success) reject('error')
          commit('updateNormalState', { makeList: res.data })
          reslove()
        }).catch(err => {
          reject(err)
        })
      })
    },
    // 挂片站
    getAllMake({ commit }) {
      return new Promise((reslove, reject) => {
        getAllMakeList().then(res => {
          if (!res.success) reject('error')
          commit('updateNormalState', { allMakeList: res.data })
          reslove()
        }).catch(err => {
          reject(err)
        })
      })
    },
    // 上线的路线图
    getOnlineRoadMap({ commit }, params) {
      return new Promise((reslove, reject) => {
        getOnlineRoadMapList(params).then(res => {
          if (!res.success) reject('error')
          commit('updateNormalState', { onlineRoadMap: res.data || []})
          reslove()
        }).catch(err => {
          reject(err)
        })
      })
    },
    getRole({ commit }, params) {
      return new Promise((reslove, reject) => {
        getRoleList(params).then(res => {
          if (!res.success) reject('error')
          commit('updateNormalState', { roleList: res.data || []})
          reslove()
        }).catch(err => {
          reject(err)
        })
      })
    },
    getUser({ commit }, params) {
      return new Promise((reslove, reject) => {
        getUserList(params).then(res => {
          if (!res.success) reject('error')
          commit('updateNormalState', { userList: res.data || []})
          reslove()
        }).catch(err => {
          reject(err)
        })
      })
    },
    // 流水线
    getWater({ commit }, params) {
      return new Promise((reslove, reject) => {
        getWaterList(params).then(res => {
          if (!res.success) reject('error')
          commit('updateNormalState', { waterList: res.data || []})
          reslove()
        }).catch(err => {
          reject(err)
        })
      })
    },
    // 流水线组别 车间
    getWaGroup({ commit }, params) {
      return new Promise((reslove, reject) => {
        getWaGroupList(params).then(res => {
          if (!res.success) reject('error')
          commit('updateNormalState', { waGroupList: res.data || []})
          reslove()
        }).catch(err => {
          reject(err)
        })
      })
    },
    
    // 员工组别
    getEmplGruop({ commit }, params) {
      return new Promise((reslove, reject) => {
        getEmplGruopList(params).then(res => {
          if (!res.success) reject('error')
          commit('updateNormalState', { emplGruopList: res.data || []})
          reslove()
        }).catch(err => {
          reject(err)
        })
      })
    },
    // 技能等级
    getSkillGrade({ commit }, params) {
      return new Promise((reslove, reject) => {
        getSkillGradeList(params).then(res => {
          if (!res.success) reject('error')
          commit('updateNormalState', { skillGradeList: res.data || []})
          reslove()
        }).catch(err => {
          reject(err)
        })
      })
    },
    // 员工列表
    getEmpl({ commit }, params) {
      return new Promise((reslove, reject) => {
        getEmplList(params).then(res => {
          if (!res.success) reject('error')
          commit('updateNormalState', { employeesList: res.data || []})
          reslove()
        }).catch(err => {
          reject(err)
        })
      })
    },
    // 未处理信息
    getUntreatNotice ({ commit }, params) {
      return new Promise((reslove, reject) => {
        getUntreatNoticeList(params).then(res => {
          if (!res.success) reject('error')
          commit('updateNormalState', { untreatNoticeList: res.data.list || [], untreatNoticeNo: res.data ? res.data.total : 0})
          reslove()
        }).catch(err => {
          reject(err)
        })
      })
    },
    // 机种管理
    getMachineType  ({ commit }, params) {
      return new Promise((reslove, reject) => {
        getMachineTypeList(params).then(res => {
          if (!res.success) reject('error')
          commit('updateNormalState', { machineTypeList: res.data  || [] })
          reslove()
        }).catch(err => {
          reject(err)
        })
      })
    },
    // 主轨列表
    getTrack  ({ commit }, params) {
      return new Promise((reslove, reject) => {
        getTrackList(params).then(res => {
          if (!res.success) reject('error')
          commit('updateNormalState', { trackList: res.data  || [] })
          reslove()
        }).catch(err => {
          reject(err)
        })
      })
    }


  },
}
export default setting